为什么基于接口而非实现编程

基于接口而非实现编程是一种非常高效且提高代码质量的手段。

接口的含义

  1. 抽象层面的接口
  • 服务端与客户端之间的“接口”
  • 类库提供的“接口”
  • 通信协议接口
  1. 代码接口
  • 编程语言中的接口类或者抽象类

接口的意义

“面向接口而非实现编程”也可以表述为”基于抽象而非实现编程”,抽象是提高代码扩展性、灵活性、可维护性的最优先手段之一。

  • 将接口与实现相分离,封装不稳定的实现,暴露稳定的接口。
  • 抽象、顶层、脱离具体实现的设计可以提高代码的灵活性,应对未来复杂的需求变化。

基于接口而非实现编程的要求

  1. 函数命名不能暴露任何实现细节,适配未来的需求变化,应该取一个较为宽泛且概括中心概念的名字。
  2. 封装具体实现细节
  3. 为实现类定义抽象的接口。使用者依赖接口,而非具体的实现类编程。

接口实现的度

任何事情都要讲一个度,对于基于接口而非实现编程的‘度’应该如何把握呢?哪些可以直接使用实现类进行编程?

  1. 业务场景中,某个功能只有一种实现方式,我来也不可能会被其他方式替代,就没必要设计接口,直接使用实现类
  2. 系统特别稳定,基本不做维护,就没必要在扩展性投入不必要的开发时间。